package me.boot.gen.uid.propertites;

import lombok.Getter;
import lombok.Setter;

/**
 * @Description:
 * @author: Sylar
 * @date: 2021年10月26日 3:12 下午
 */
@Getter
@Setter
public class DefaultId {
    /**
     * 当前时间，相对于时间基点"${epochStr}"的增量值，单位：秒，
     * 28: 大概可以使用 8.7年, 28位即最大表示2^28的数值的秒数
     * 30: 大概可以使用 34年, 30位即最大表示2^30的数值的秒数
     * 31: 大概可以使用 68年, 31位即最大表示2^31的数值的秒数
     */
    private int timeBits = 31;
    /**
     * 机器id，
     * <p>
     * 20：100W次重启
     * 22: 最多可支持约420w次机器启动。内置实现为在启动时由数据库分配。420w = 2^22
     * 23：800w次重启  12次/天
     * 27: 1.3亿次重启 24*12次/天
     */
    private int workerBits = 23;
    /**
     * 每秒下的并发序列，13 bits可支持每秒8192个并发，即2^13个并发
     * 9: 512 并发
     * 13: 8192 并发
     */
    private int seqBits = 9;
    /**
     * Customer epoch, unit as second. For example 2016-05-20 (ms: 1463673600000)
     * 可以改成你的项目开始开始的时间
     */
    private String epochStr = "2020-09-15";
}
